This invention relates, in general, to data communication and, in particular, to controlling the flow of information between senders of information and receivers of that information, when the information is being forwarded across links being used as channels.
Communication between computer systems usually involves a sending system (sender) sending a command to a receiving system (receiver) over a link used to couple the sender and the receiver. The receiving system then, typically, sends a response back over the link to the sending system.
One example of a link used by International Business Machines Corporation to communicate between a sender and a receiver is an intersystem channel link. In particular, an intersystem channel link couples an intersystem channel adapter on one system (e.g., a central processor) that may be used for sending or receiving messages with an intersystem channel adapter on another system (e.g., a coupling facility that contains data shared by any central processor coupled thereto) that may also be used for sending or receiving messages.
An intersystem channel link supports connections up to approximately 20 kilometers, and the propagation time on the link (at 20 kilometers), when using fiber optic conductors, is approximately 100 microseconds in each direction. To minimize message latency, a minimum number of round trip acknowledgements is used, and thus, large data buffers at each end of the link are needed for flow control. In one example, a message exchange requires only one single round trip over the link.
As more and more data is desired to be included with the message, larger data buffers are needed to maintain the single round trip flow control. However, eventually, the expense of large buffers becomes prohibitive and the flow control is modified to add intermediate acknowledgement exchanges to throttle the data transfer preventing the buffers from overrunning. These extra exchanges, though, significantly increase message latency.
Based on the foregoing, a need exists for a more direct communication link between senders and receivers of information. Further, a need exists for a communication link that does not need to couple channel adapters, but still may act as a channel. That is, a need exists for a communication protocol in which the advantages of a channel (e.g., having a direct memory adapter engine and offering protection of memory) may be realized. Additionally, a need exists for a communication protocol that does not require large data buffers and does not significantly add to message latency.
The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a method of controlling the flow of information between senders and receivers of data. The method includes, for instance, initiating, by a first system, a sending of a request, via a link, to a second system, in which the request has one or more data items associated therewith that are not sent with the request; indicating that a receiver of data is prepared to receive the one or more data items from a sender of data, wherein the receiver is either the first system or the second system depending on the request, and the sender is the other of the first system or the second system; forwarding, in response to the indicating, the one or more data items; and wherein the link is being used as a channel in that the link is not stopped while the receiver is preparing for the one or more data items.
In another aspect of the present invention, a method of controlling the flow of information across links between senders and receivers is provided. The method includes, for instance, including in a packet a sequence number usable in maintaining delivery order of the packet. The packet, however, does not include a memory address and does not require an explicit individual response. The packet is sent from a sender to a receiver across a link, and the sequence number is used to determine if the packet is in proper order for processing by the receiver.
In another aspect of the present invention, a method of controlling the flow of information across links between senders and receivers is provided. The method includes, for instance, including in a packet a continue indicator usable in determining whether another packet is to follow; sending the packet from a sender to a receiver across a link; and using the continue indicator to determine if the another packet is to follow.
Advantageously, the flow control capabilities of the present invention provide a more direct communication path between senders and receivers. Further, the flow control protocol does not require large data buffers and offers low latency messaging. Thus, the present invention is less expensive than other communication protocols.
Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.